iT邦幫忙

DAY 28
0

初學 Golang 30 天系列 第 28

初學 Golang 30 天(二十八)Router, Template

  • 分享至 

  • xImage
  •  

簡單使用 Martini 的 Router 和 Template 做網站開發!
###Router, Template
一開始我們會需要另外一個 lib,因為 Martini 的 lib 只有基本伺服器的工具,沒有包函 View Render,所以我們會需要使用 View Render 來操作 Template。
所以我們先使用 go get 來下載

go get github.com/martini-contrib/render  

這樣我們就可以引用 lib 了!

package main  
 
import (  
"github.com/go-martini/martini"  
"github.com/martini-contrib/render"  
)  
 
func main() {  
m := martini.Classic()  
 
m.Get("/hello/:name", func(params martini.Params) string {  
return "Hello " + params["name"]  
})  
 
m.Use(render.Renderer(render.Options{  
Layout: "layout",  
}))  
 
type Member struct {  
Id int  
Name string  
Sex string  
}  
member := Member{  
Id: 1, Name: "Negaihoshi", Sex: "Male",  
}  
 
m.Get("/", func(r render.Render) {  
r.HTML(200, "hello", member)  
})  
 
m.Run()  
}  
 

首先 m.Get 是使用 Get 方法來獲取 response,如同前面一章的方法,不過稍微不同的是我們這邊稍微做一點進階的操作,我們在 router 的 rule 這邊打上 /hello/:name ,這個是什麼意思呢?意思是網址 /hello/ 下網站會看 :name 這個變數來做操作,所以下面就要寫我們要做什麼?而這邊我們返回 "Hello " + params["name"] 而 params 這邊就是用來解析引數的語法。
如果我今天輸入網址 /hello/:Negaihoshi,那我網站就會出現「 Hello Negaihoshi」。
下面這邊我們利用 Use 方法來設定 Options ,而這邊設定的是我們要使用 layout,並且指定 layout 的位置,而我們這邊寫 "layout",指的是 templates/layout.tmpl 這個檔案。
往後面看這邊就簡單了,用了前面學過得 stuct 來存放資料,並且使用 Get 方法,當有人瀏覽根目錄的時候,將 member 傳入 hello.tmpl 檔。

  
  
<title></title>  
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">  
  
  
{{ yield }}  
  
  
 

這邊其實很簡單就是使用 yield 來引入入其他的 tmpl 檔。

<table class="table table-hover">  
<thead>  
<tr>  
<td>  
ID  
</td>  
<td>  
Name  
</td>  
<td>  
Sex  
</td>  
</tr>  
</thead>  
<tbody>  
<tr>  
 
<td>  
{{ .Id }}  
</td>  
<td>  
{{ .Name }}  
</td>  
<td>  
{{ .Sex }}  
</td>  
 
</tr>  
</tbody>  
</table>  
 

這邊則是印數我們要的數值,而需要用「 . 」來操作


上一篇
初學 Golang 30 天(二十七)Martini
下一篇
初學 Golang 30 天(二十九)POST/GET
系列文
初學 Golang 30 天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言